package io;

import java.io.FileInputStream;


/**
 * 文件输入流，读取文件数据
 */
public class FISDemo {
    public static void main(String[] args) throws Exception {
        /*
        FileInputStream（String fileName）
        FileInputStream(File file)
         */
        FileInputStream fis = new FileInputStream("fos.fat");//定义文件输入流
        /*
           InputSteam超类上定义了读取一个字节的方法:(所有的字节输入流都有具有该方法)
           int read():读取1个字节，并以int形式返回
           1）---返回的int值对应的2进制中只有"低八位”是有效的，高24为全部补0
           2）---如果该方法返回的int值为-1（32个1）
           第1次调用: int d = fis.read();
           fos.dat的数据：
              00000001 00000010 文件末尾
              ^^^^^^^^
              读取的字节

              此时变量d对应的2进制样子：00000000 00000000 00000000 00000001
                                   |-------补充24个0----------|读取的字节
            第2次调用: int d = fis.read();//读取了2个字节
             fos.dat的数据：
              00000001 00000010 文件末尾
                       ^^^^^^^^
                       读取的字节
               此时变量d对应的2进制样子：00000000 00000000 00000000 00000010
                                   |-------补充24个0----------| 读取的字节

            第3次调用: int d = fis.read();//读取了文件末尾
             fos.dat的数据：
              00000001 00000010 文件末尾
                       ^^^^^^^^
                       没有字节了
             此时变量d对应的2进制样子 11111111 11111111 11111111 11111111
                                   |-------------补充24个字节---------|
        */

        int d = fis.read();//读取第一个字节
        System.out.println(d);//输出10进制数据：1


        d = fis.read();//又读取一个字节
        System.out.println(d);//输出10进制数据：2

        d = fis.read();//又读取一个字节
        System.out.println(d);//输出10进制数据：1


        d = fis.read();//读取文件末尾了
        System.out.println(d);//输出10进制数据：-1

        fis.close();//关闭流
    }
}
